"""
    使用heapq来制作优先级队列,自行拟定比较顺序
    tip：
        元组之间是可以比较的，先比较第一个元素，再以此比较之后的元素 例如 (1,100) < (2,1)
"""
import heapq


class Item:
    def __init__(self,name):
        self._name = name

    def __repr__(self):
        return 'Item({})'.format(self._name)


class PriorityQueue:
    def __init__(self):
        self._queue = []
        self._index = 0

    def push(self,Item,priority):
        # -priority保证降序,index表示插入顺序
        heapq.heappush(self._queue,(-priority,self._index,Item))
        self._index += 1

    def pop(self):
        return heapq.heappop(self._queue)[-1]


q = PriorityQueue()
q.push(Item('诺基亚'),1000)
q.push(Item('苹果'),10000)
q.push(Item('三星'),8000)
q.push(Item('华为'),6000)
print(q.pop())
print(q.pop())
print(q.pop())
print(q.pop())